Gesloten. Deze vraag heeft details of duidelijkheid nodig. Het accepteert momenteel geen antwoorden. Wilt u deze vraag verbeteren? Voeg details toe en verduidelijk het probleem door dit bericht te bewerken. 1 jaar geleden gesloten. Verbeter deze vraag Ik doe een code-uitdaging en ik wil de eerste 3 waarden uit mijn array halen door de startindex op te geven en alleen de eerste (3 of kan elke lengte zijn) waarden uit de startindex te halen. Ik heb deze code geprobeerd en het werkt, maar de codestructuur is te lang, dus hoe kan ik dit korter maken, zodat het gemakkelijk te begrijpen is. int n = 10; dubbele handtekening = nieuwe dubbele [] {1, 1, 1}; dubbel [] ret = nieuw dubbel [n]; dubbele som = 0; ret [0] = handtekening [0]; ret [1] = handtekening [1]; ret [2] = handtekening [2]; int x, i; voor (i = 0; i
2021-01-31 08:19:56
Met LINQ kun je zoiets als dit proberen: var waarden = array.Skip (index) .Neem (n) .ToArray (); Waarbij index de index is van het eerste item en n het aantal items dat u wilt kiezen. Bijv. https://dotnetfiddle.net/Pk1rwY Als een kanttekening. Het gebruik van LINQ betekent niet dat uw code sneller zou zijn. Het zou compacter / leesbaarder zijn enz. Om te beoordelen hoe performant uw code is, moet u zoiets als BenchmarkDotNet gebruiken. | Geen Linq-oplossing: private static T [] Extract(T [] source, int fromIndex, int length) { if (null == bron) gooi nieuw ArgumentNullException (nameof (source)); else if (fromIndex <0) gooi nieuw ArgumentOutOfRangeException (nameof (fromIndex), "Van index mag niet negatief zijn"); else if (lengte <0) gooi nieuw ArgumentOutOfRangeException (naam van (lengte), "Lengte mag niet negatief zijn"); if (fromIndex> = source.Length || length == 0) retourneer nieuwe T [0]; T [] resultaat = nieuwe T [Math.Min (lengte, source.Length - fromIndex)]; Array.Copy (source, fromIndex, result, 0, result.Length); resultaat teruggeven; } Vervolgens dubbel [] handtekening = nieuw dubbel [] {0, 1, 2, 3, 4, 5}; double [] ret = Extract (handtekening, 3, 2); Console.Write (string.Join (",", ret)); Resultaat: 3, 4 | Bij uw vraag moet u profiteren van de operators .Take en .Skip. var resultaat = array.Skip (startsIndex) .Take (numberOfElements); Vanuit je code lijkt het dus dat je iets anders probeert te doen, namelijk elementen optellen. De .Sum-operator kan hierbij helpen. | Niet het antwoord waar je naar zoekt? Blader door andere vragen met de tag c # arrays linq of stel uw eigen vraag.